package com.peng.manager;

import jakarta.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.List;

//有多种类型，这里只管理list类型
//string
//list
//hash
//set
//zset
@Component
public class RedisManager {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

//    从 Redis List 数据结构中取出 key 对应的所有值。
//    opsForList().range(key, 0, -1)：
//    opsForList()：操作 Redis 的 List 数据结构。
//    range(key, 0, -1)：获取该 List 所有元素（从索引 0 到 -1 代表最后一个元素）。
    public Object getValue(String key) {
        return redisTemplate.opsForList().range(key, 0, -1);
    }

//    将 Collection<T> 里的数据全部存入 Redis List，存储在 key 对应的列表中。
//    data.toArray(t)：将 Collection<T> 转换为 Object[] 数组。
//    opsForList().leftPushAll(key, t)：批量将数据从 左侧 推入 Redis List，新数据排在最前面。
    public <T> Object setValue(String key,  Collection<T> data) {
        //string
        //list
        //hash
        //set
        //zset
        Object[] t  = new Object[data.size()];
        data.toArray(t);
        return redisTemplate.opsForList().leftPushAll(key, t);
    }
}
